import axios from 'axios';
import {ElMessage} from 'element-plus';
import { useAppStore } from '@/store/modules/app';

const base = 'http://localhost:8080/';

// 创建axios实例
const service = axios.create({
  // axios的baseURL配置，用于设置请求的baseURL
  baseURL: base,
  // 请求超时时间
  timeout: 5000
});

// 请求拦截器
service.interceptors.request.use(
    config => {
      // 在发送请求之前做些什么，例如设置请求头
      config.headers['Content-Type'] = 'application/json;charset=utf-8'
        const appStore = useAppStore();
      if (appStore.token) {
        // 让每个请求携带token
        config.headers['token'] = appStore.token;
      }
      return config;
    },
    error => {
      // 处理请求错误
      console.log(error);
      Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    response => {
      // 任何在2xx范围内的状态码都会触发此函数
      // 对响应数据做点什么
      if (response.data.code === 200 ) {

        return response.data;

      } else {
        ElMessage({
          message: response.data.msg,
          type: 'error',
          duration: 5 * 1000
        });
        return Promise.reject(new Error(response.data.msg));
      }
    },
    error => {
      // 任何超出2xx范围的状态码都会触发此函数
      // 对响应错误做点什么
        const appStore = useAppStore();
      if (error.response) {
        switch (error.response.status) {
          case 401:
           location.reload();
            break;
            // 其他错误，可以根据状态码进行不同的处理
          default:
            ElMessage({
              message: error.message,
              type: 'error',
              duration: 5 * 1000
            });
        }
      }
      return Promise.reject(error);
    }
);

// 封装get请求
export function get(url, params) {
  return service.get(url, {
    params: params
  });
}

// 封装post请求
export function post(url, data) {
  return service.post(url, data);
}
export function getServerUrl(){
    return base;
}
// 导出axios实例，可在其他地方使用
export default service;
